package com.tiancheng.trade.settlement.vo.settlement.api;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * @Auther: wx
 * @Date: 2024/3/25 15:03
 * @Param ${tags}
 * @Description:清分账单数据表（数据需拆分到待对账表）
 */
@Setter
@Getter
@ToString
public class SettlementBillDataVO {

    /**
     * 订单交易时间
     */
    @NotNull
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime payTime;
    /**
     * 支付流水号
     */
    @NotNull
    private String flowId;
    /**
     * 核销ID
     */
    private String verificationId;
    /**
     * 核销金额
     */
    private Integer verifiedAmount;
    /**
     * 核销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime verifiedTime;
    /**
     * 主订单号
     */
    @NotNull
    private String orderId;
    /**
     * 子订单号
     */
    @NotNull
    private String subOrderId;

    /**
     * 子订单金额
     */
    private Integer subOrderAmount;
    @NotNull
    /** 子订单金数量*/
    private Integer subOrderCount;
    /**
     * 实际支付金额
     */
    private Integer actualAmount;
    /**
     * 成本价
     */
    private Integer costPrice;
    /**
     * 退款ID
     */
    private String refundId;
    /**
     * 申请退款金额
     */
    private Integer applyRefundAmount;
    /**
     * 实际退款金额
     */
    private Integer refundAmount;
    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime refundTime;
    /**
     * 子订单优惠金额
     */
    private Integer discountAmount;
    /**
     * 商户编码/商户ID
     */
    @NotNull
    private String merchantCode;

    /**
     * 商户名称
     */
    @NotNull
    private String merchantName;
    /**
     * 产品编码/产品ID
     */
    @NotNull
    private String productCode;
    /**
     * 商品名称
     */
    @NotNull
    private String productName;
    /**
     * 商品数量
     */
    @NotNull
    private Integer productCount;

    /**
     * 支付渠道编码
     */
    @NotNull
    private String payChannelCode;

    /**
     * 业务类型1-酒店，2-机票，3-门票，4-精品路线，5-汽车票，6-自由行，7交通，8-包车
     */
    @NotNull
    private String orderSource;

    /**
     * 清分规则编号
     */
    private String clearRuleCode;
    /**
     * 清分周期类型(1:按天 2:按月)
     */
    private String clearingCycleMode;
    /**
     * 清分周期值
     */
    private Integer clearingCycleValue;
    /**
     * 清分周期拓展值
     */
    private Integer clearingCycleValueExt;
    /**
     * 清分规则(1:百分比 2:固定金额)
     */
    private String clearingRule;

    /**
     * 应清分日期
     */
    private LocalDateTime shouldClearDate;

    /**
     * 应对账日期
     */
    private LocalDateTime shouldBillDate;


    /**
     * 数据类型,VE-核销，RE-退款
     */
    @NotNull
    private String tradeType;

    /**
     * 数据状态  AS-已拆分，NS-未拆分
     */
    private String dataStatus = "NS";
}
